/* 引入模拟数据 */
import other from "./data/other";
import goods from "./data/goods";
import classfy from "./data/classify.data.js"
import cartGoods from "./data/cart-goods";
/* 封装请求轮播图的函数 */
/* sort参数：排序方式 */
export function apiBanner(sort) {
	// promise异步编程
	return new Promise((resolve, reject) => {
		// 定时只是模拟请求的延时
		setTimeout(function() {
			try {
				let list = []; //接受请求结果
				// 根据sort传递过来的关键字确认排序方式
				/* 请求到数据后的操作 */
				switch (sort) {
					case 'asc':
						list = [...other[0].list];
						break;
					case 'desc':
						list = other[0].list.reverse();
						break;
				}
				/* 请求到数据后的操作 */
				resolve(list); // 请求最终的数据
			} catch (e) {
				reject(e); //操作失败
			}
		}, 1000)
	})
}

/* 封装请求选项卡标题的函数 */
export function apiIndexTabs() {
	return new Promise((resolve, reject) => {
		setTimeout(() => {
			try {
				let list = other[1].list;
				resolve(list);
			} catch (e) {
				reject(e);
			}
		}, 1000);
	})
}

/* 封装请求分类导航的数据 */
/* 
 p：获取当前页码
 num：每页条数
 tabname：选项卡关键字
*/
export function apiGoods(p, num, tabname) {
	return new Promise((resolve, reject) => {
		setTimeout(() => {
			try {
				let list = [],
					result = [];
				switch (tabname) {
					case "全部":
						list = [...goods];
						break;
						// 剩余所有关键字都执行相同的逻辑
					default:
						let arr = tabname.split('');
						// 遍历商品
						goods.forEach((item) => {
							// 遍历关键词
							for (let val of arr) {
								// 只要商品名称中匹配上关键字的任意一个那么都将结果传递出去
								if (item.goodName.indexOf(val) != -1) {
									list.push(item);
									// 终止当前关键字继续
									break;
								}
							}
						})
				}
				// 计算出总页数
				let sumPages = Math.ceil(list.length / num);
				// 当前页码是否小于等于总页数；成立了才能需截取数组
				if (p <= sumPages) {
					for (let i = (p - 1) * num; i < p * num; i++) {
						// 当i等于查询后的数组长度，断掉循环
						if (i == list.length) break;
						// 否则将当前循环的元素添加到result传递
						result.push(list[i]);
					}
				}

				resolve(result);
			} catch (e) {
				reject(e);
			}
		}, 1000)
	})
}
export function apiGoodsById(id) {
	return new Promise((resolve, reject) => {
		setTimeout(() => {
			try {
				let foundItem = {};
				goods.forEach((item) => {
					if (item.id == id) {
						foundItem = item;
					}
				})
				resolve(foundItem)
			} catch (e) {
				reject(e)
			}
		}, 1000)
	})
}

export function apiClassfy() {
	return new Promise((reslove, reject) => {
		setTimeout(() => {
			try {
				let list = [];
				list = [...classfy]
				reslove(list)
			} catch (e) {
				reject(e)
			}
		}, 1000)
	})
}


export function apiCart() {
	return new Promise((reslove, reject) => {
		setTimeout(() => {
			try {
				let list = [];
				list = [...cartGoods]
				reslove(list)
			} catch (e) {
				reject(e)
			}
		}, 1000)
	})
}



export function apiCartGoods( ){
	//promise异步编程
	return new Promise((resolve , reject)=>{
		//定时器只是模仿请求的延时
		setTimeout(function(){
			try{
				let list = [...cartGoods]; //接受请求结果
				
				// 请求到数据后的操作
				resolve(list); //请求最终的数据
			}catch(e){
				reject(e); //操作失败的结果
			}
		},1000)
	})
}



export function apiDetail(id ){
	//promise异步编程
	return new Promise((resolve , reject)=>{
		//定时器只是模仿请求的延时
		setTimeout(function(){
			try{
				let list = {}; //接受请求结果
				list = goods.find(item => item.id == id);
				// 请求到数据后的操作
				resolve(list); //请求最终的数据
			}catch(e){
				reject(e); //操作失败的结果
			}
		},1000)
	})
}